define([ "ng", "_", "acudiente/js/acudiente-module", "common/js/user-module",
		"common/js/util-module", "common/js/colegio-info-module", "ui.router" ], function(angular, _) {
	var app = angular.module("AcudienteApp", [ 'UserModule', 'UtilModule',
			'AcudienteModule', "ColegioInfoModule", "ui.router" ]);

	app.config(function($stateProvider, $urlRouterProvider) {
		$urlRouterProvider.otherwise("/estudiantes");
		$stateProvider.state("estudiantes", {
			url : '/estudiantes',
			templateUrl : '/acudiente/estudiantes.html',
			controller : 'EstudiantesCtrl'
		});
		$stateProvider.state("estudiante", {
			url : '/estudiante/:idEstudiante',
			templateUrl : '/acudiente/estudiante.html',
			controller : 'EstudianteCtrl'
		});
		$stateProvider.state("estudiante.materia", {
			url : '/materia/:idMateria',
			templateUrl : '/acudiente/materia.html',
			controller : 'MateriaCtrl'
		});
	});
	app.controller("AcudienteCtrl", function($scope, User, $state, Acudiente,
			$stateParams, $window) {
		$scope.user = User.getMyInfo();
		$scope.isState = function(state, params) {
			var b = $state.includes(state);
			if (params)
				_.forEach(params, function(v, k) {
					b = b && $stateParams[k] == v;
				});
			return b;
		}
		$scope.logOut = function() {
			User.logout({}, function() {
				$window.location.href = "/";
			}, function() {
				$window.location.href = "/";
			})
		};
		$scope.estudiantes = Acudiente.getEstudiantes();
	});

	app.controller("EstudiantesCtrl", function($scope, Acudiente) {

	});

	app.controller("EstudianteCtrl", function($scope, Acudiente, $stateParams,
			ColegioInfo) {
		var mapaMaterias = [];
		ColegioInfo.getMaterias(function(data) {
			mapaMaterias = _.indexBy(data, "id");
		});

		Acudiente.getMateriasGrado({
			idEstudiante : $stateParams.idEstudiante
		}, function(data) {
			$scope.materias = [];
			_.forEach(data, function(m) {
				$scope.materias.push(mapaMaterias[m.idMateria]);
			});

		});
	});

	app.controller("MateriaCtrl", function($scope, $stateParams, Acudiente) {
		$scope.mapaIndicadores = [];
		Acudiente.getIndicadoresPeriodo($stateParams, function(data) {
			$scope.mapaIndicadores = _.groupBy(data, "idPeriodo");
		});
	});
	return app;
});
